package basis.netease.medium;

import java.util.Arrays;
import java.util.LinkedList;
import java.util.Scanner;

/**
 * 7-11 验证栈序列
 * 给定 pushed 和 popped 两个序列，每个序列中的 值都不重复，只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时，返回 true；否则，返回 false 。
 * 输入格式:
 * 第一行为输入序列，第二行为输出序列
 * 输出格式:
 * true 或者 false
 * 输入样例1:
 * 在这里给出一组输入。例如：
 * 1,2,3,4,5
 * 4,5,3,2,1
 * 输出样例1:
 * 在这里给出相应的输出。例如：
 * true
 * 解释1:
 * 我们可以按以下顺序执行：
 * push(1), push(2), push(3), push(4), pop() -> 4,
 * push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1
 * 输入样例2:
 * 在这里给出一组输入。例如：
 * 1,2,3,4,5
 * 4,3,5,1,2
 * 输出样例2:
 * 在这里给出相应的输出。例如：
 * false
 * 解释2:
 * 1 不能在 2 之前弹出。
 * 提示:
 * 1 <= pushed.length <= 1000
 * 0 <= pushed[i] <= 1000
 * pushed 的所有元素 互不相同
 * popped.length == pushed.length
 * popped 是 pushed 的一个排列
 * 返回的字符串需要是小写的！
 */
public class Main_10 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] push = Arrays.stream(scanner.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
        int[] pop = Arrays.stream(scanner.nextLine().split(",")).mapToInt(Integer::parseInt).toArray();
        LinkedList<Integer> stack = new LinkedList();
        int popIndex = 0;
        for (int num : push) {
            stack.push(num);
            // 当栈顶元素与pop的当前元素相等时，出栈
            while (!stack.isEmpty() && stack.peek() == pop[popIndex]) {
                stack.pop();
                popIndex++;
            }
        }
        // 如果栈为空，说明pop序列满足条件
        System.out.println(stack.isEmpty());
    }

}
